Play framework 2.0のeclipsifyでjarのソースも設定する
Eclipseでplayframeworkを使った開発
先日twitterを眺めていたら、play2.0のeclipsifyに関する話題があったのでご紹介。 eclipsifyではwith-sourceオプションをつけることができ、これをするとplayやそれに関連するソースもattachしてくれるとのことです。 これは便利だということで試してみました。
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.3
- Playframework : 2.0.1
- Java : 1.6.0_26
プロジェクト作成
Scalaベースのプロジェクトを作成しましょう。
% play new withsource % cd withsource
設定の編集
ここにあるように、プロジェクトのルートにivysettings.xmlを作成します。
<ivysettings> <!-- Build.scalaのsettingsにexternalIvySettings()を追加すると有効 --> <caches useOrigin="true"/> <settings defaultResolver="play"/> <resolvers> <chain name="play"> <filesystem name="1"> <!-- ここは絶対パスじゃないとだめ。playの${sbt.ivy.home}は相対パスだった --> <artifact pattern="/path-your-play-src/[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" /> </filesystem> <url name="typesafe-ivy-release"> <artifact pattern="http://repo.typesafe.com/typesafe/ivy-releases/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"/> </url> <ibiblio name="typesafe-release" m2compatible="true" root="http://repo.typesafe.com/typesafe/releases/"/> <ibiblio name="maven2" m2compatible="true"/> </chain> </resolvers> </ivysettings>
自分の場合、各環境の絶対パスを設定するartifact部分はhomebrewでインストールしたため、「/usr/local/Cellar/play/2.0.1/libexec/repogitory/local」でした。
次に、project/Build.scalaのsettingsにexternalIvySettings()を追加します。
import sbt._ import Keys._ import PlayProject._ object ApplicationBuild extends Build { val appName = "withsource" val appVersion = "1.0-SNAPSHOT" val appDependencies = Seq( // Add your project dependencies here, ) val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings( //ここを追加 externalIvySettings() )
eclipsifyの実行
playコンソールを起動し、eclipsifyを実行します。
$ play [withsource] $ eclipsify with-source=true
かなり長い時間がかかりますが、ソースを含めて依存するjarのダウンロードが行われます。 eclipsifyが完了したらEclipseからimportしてみましょう。 デフォルトで生成されるapplication.scalaファイルを開き、Conctrollerクラスを開いてみると、クラス定義が表示されます。
まとめ
今回はソースつきでeclipsifyをする方法をご紹介しました。 現状はAnormのソースが見れなかったり、いくつか不具合があるようですが、Play本体のソースは一応みれるので役に立つかと思います。